Kotlin Basic Syntax

最近在了解Android Jetpack相关的知识点,官方给出了很多建议的Project,大部分都是kotlin实现的,所以了解一下基本的kotlin语法,防止Read Source的时候卡住,记录一下,避免遗忘~

1、知识点

1.1、函数

1)函数的返回类型

1
2
3
fun sum(a: Int, b: Int): Int {
return a + b
}

2)可以将表达式作为函数体、返回值类型自动推断的函数

1
fun sum(a: Int, b: Int) = a + b

1.2、变量

1)定义只读局部变量使用关键字 val 定义。只能为其赋值一次

1
2
3
4
val a: Int = 1  // 立即赋值
val b = 2 // 自动推断出 `Int` 类型
val c: Int // 如果没有初始值类型不能省略
c = 3 // 明确赋值

2)可重新赋值的变量使用 var 关键字:

1
2
var x = 5 // 自动推断出 `Int` 类型
x += 1

1.3、字符串

1
2
3
4
5
6
7
8
9
10
fun main() {
var a = 1
// 模板中的简单名称:
val s1 = "a is $a"

a = 2
// 模板中的任意表达式:
val s2 = "${s1.replace("is", "was")}, but now is $a"
println(s2)
}

1.4、空值与 null

1)当某个变量的值可以为 null 的时候,必须在声明处的类型后添加 ? 来标识该引用可为空。如果 str 的内容不是数字返回 null

1
2
3
fun parseInt(str: String): Int? {
return str.toIntOrNull()
}

1.5、is

1)is 运算符检测一个表达式是否某类型的一个实例。 如果一个不可变的局部变量或属性已经判断出为某类型,那么检测后的分支中可以直接当作该类型使用,无需显式转换:

1.6、when 表达式

1
2
3
4
5
6
7
8
fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}

1.7、for 循环

1
2
3
4
val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
println(item)
}

或者

1
2
3
4
val items = listOf("apple", "banana", "kiwifruit")
for (index in items.indices) {
println("item at $index is ${items[index]}")
}

1.8、使用区间(range)

1
2
3
4
5
val x = 10
val y = 9
if (x in 1..y+1) {
println("fits in range")
}